In computer systems, and devices having an embedded processor and software, it may be necessary to try out a new version of software, requiring the user to remove the old version. Users may be reluctant to try the new version of the software because it may not work in a satisfactory manner or it may completely fail to work, resulting in device unavailability or decreased reliability.
When updating a router, bridge, and other system having a software-configured processor, a backup copy of the old version may be stored on a separate computer before establishing a new version. If the new version fails, the old version can be copied from that separate computer to the embedded system. This copying is time consuming and creates the possibility that there may be new user errors in reloading the old software and reconfiguring the system. In addition, this solution may require that the embedded system, with the new version, be at least partially working to restore the old version.
Various implementations of the invention may include one or more of the following features.
In general, in one aspect, the invention features a method for testing software in a device, including initializing the device, storing at least two software images in a memory in the device, providing status information to indicate the state of each software image in memory and selecting one of the software images for execution depending upon the status information.
Implementations may include one or more of the following features.
In an implementation, selecting one of the software images for execution includes executing the version with status information indicating the image is a test version. Selecting one of the software images for execution includes executing the image with status information indicating the image is a known operational version.
Implementations may also include changing the status information for the selected software image prior to execution from a status indicating that the image is a test version to a status indicating that the image is to be ignored by the device, and associating status information of one other software image in memory which is known to be operational to indicate that the one other image of software is operational, and determining whether the device is operating properly.
Implementations may also include changing the status information of the selected software image from indicating that it is to be ignored to status information that indicates that it is an operational version if the device is operating properly, and changing the status information of the one other software image to a status information indicating that it is to be ignored by the device, maintaining the status information of the selected software image if the device is not operating properly, and reinitializing the device.
In an implementation, the software images and status information are stored in a non-volatile memory, the non-volatile memory comprising a plurality of bit value locations, the bit value locations being independently addressable when changing state between a first state value and a second state value, and the bit value locations being addressable members of an interdependent plurality of locations when changing state between the second state value and the first state value. In addition, changing the status information comprises altering a bit value location between the first state value and the second state value.
In another aspect, the invention features a method in a network device including storing at least two software images in memory, providing status information for each of the software images indicating the operational state of the software images, indicating in the status information of one of the software images that the image is a test image, indicating in the status information in one of the images known to be operational that it is a fallback image, storing the fallback image in a memory in the network device, executing the test image, removing the test image and executing the fallback image if the test image does not operate properly and reinitializing the device. The memory in the network device can be flash memory.
In another aspect, the invention features a method of managing images of software in a device including storing at least two images of software in a memory in the device, storing status records in the memory, wherein the status records indicate the operating mode of the software, selecting one of the images of software to establish device operation depending on the status records.
Implementations may include selecting one of the images of software by altering the status records to indicate an attempt to establish device operation with the selected image of software, and executing the selected image of software.
Implementations may also include reinitializing the device, wherein reinitializing the device comprises detecting a status record designating the selected version as a test image and altering the detected status record to designate the selected image as a rejected version, establishing device operation, indicating whether the operational image of software is to be accepted, and selectively altering any status records necessary to indicate whether the selected version is to be accepted.
In another aspect the invention features a computer program residing on a computer-readable medium comprising instructions for causing a computer to store at least two images of software in a memory in the device, store a status record for each image in the memory, wherein the status records indicate the operating mode of the associated software image, select one of the images of software to establish device operation. Implementations may include instructions to select one of the software images, alter the status records to indicate an attempt to establish device operation with the selected image of software, execute the selected image of software.
Implementations may also include instructions to detect a status record designating the selected image as a test version, to alter the detected status record to designate the selected image as a rejected version, establish device operation, indicate whether the operational image of software is to be accepted and selectively alter status records to indicate whether the selected image is to be accepted.
In yet another aspect, the invention features a processor-based apparatus including a processor, a memory operationally coupled to the processor, the memory storing instructions to: store at least two images of software in a second memory in the apparatus, store status records in the second memory, wherein each status record indicates the operating mode of the associated software image, and select one of the images of software to establish device operation.
Implementations may include, a hard disk and a flash-memory.
The invention may provide one or more of the following advantages.
The systems and techniques described here can enable a user of a network device to store two versions of software the network device. One version of the software is a known and operational version. Another version can be a new version that is not yet known to be operational. The user has to designate the operational version as a fallback version and the new version as a test version. If the new version fails to work or renders the device non-operational and non-responsive, the user simply has to restart the system and the old operation version will be reloaded.
The details of one or more embodiments are set forth in the accompanying drawings and the description below. Other features, objects, and advantages of the invention will be apparent from the description and drawings, and from the claims.